package client.superadmin;

import static org.stjs.javascript.JSCollections.$array;
import static org.stjs.javascript.JSCollections.$castArray;

import org.stjs.javascript.Array;
import org.stjs.javascript.Map;

import client.common.EndPoints.SupadminEP;
import client.common.Models.Coordinador;
import client.common.Models.Orientador;
import client.common.Models.Persona;
import client.common.Models.Profesor;
import client.common.Models.Secretario;
import client.common.angular.NgScope;
import client.common.angular.Promise;
import client.common.angular.UIState;
import client.common.directives.EPModal;
import client.common.javascript.JsProcedure1;

public class ColUsuariosScope extends NgScope {
	public static Array<String> $inject() {
		return $array("Superadmin", "epModal", "$state", "$stateParams");
	}

	private Persona nuevoUsuario;
	private Array<Promise> usuarios;
	private String tipoUsuario;
	private SupadminEP superEP;
	private EPModal epModal;
	private Long idColegio;

	public ColUsuariosScope(final SupadminEP superEP, EPModal epModal,
			UIState state, Map<String, Long> stateParams) {
		super("ColUsuariosScope");
		this.tipoUsuario = $castArray(state.current.name.split(".")).$get(2);
		this.superEP = superEP;
		this.epModal = epModal;
		this.idColegio = stateParams.$get("idColegio");
		if (tipoUsuario == "profesores") {
			usuarios = (Array) superEP.getProfesores(idColegio);
		} else if (tipoUsuario == "secretarios") {
			usuarios = (Array) superEP.getSecretarios(idColegio);
		} else if (tipoUsuario == "coordinadores") {
			usuarios = (Array) superEP.getCoordinadores(idColegio);
		} else if (tipoUsuario == "orientadores") {
			usuarios = (Array) superEP.getOrientadores(idColegio);
		}
	}

	public void crearUsuario() {
		final ColUsuariosScope self = this;
		JsProcedure1 cb = new JsProcedure1<Promise>() {
			@Override
			public void $invoke(Promise p) {
				self.usuarios.push(p);
				self.epModal.close("nuevo-usuario");
				self.nuevoUsuario = new Persona();
			}
		};
		if (tipoUsuario == "profesores") {
			Profesor p = new Profesor();
			p.persona = nuevoUsuario;
			superEP.newProfesor(idColegio, p, cb);
		} else if (tipoUsuario == "secretarios") {
			Secretario p = new Secretario();
			p.persona = nuevoUsuario;
			superEP.newSecretario(idColegio, p, cb);
		} else if (tipoUsuario == "coordinadores") {
			Coordinador p = new Coordinador();
			p.persona = nuevoUsuario;
			superEP.newCoordinador(idColegio, p, cb);
		} else if (tipoUsuario == "orientadores") {
			Orientador p = new Orientador();
			p.persona = nuevoUsuario;
			superEP.newOrientador(idColegio, p, cb);
		}

	}
}
